<?php
namespace app\index\controller;

use think\Db;
use think\console\command\make\Model;
use app\index\model\IndexModel;


class IndexController
{
    ///index-route.php/index/index/index/us/33/params/10
    public function index($params)
    {
        return "hello world,params:$params";
    }
    public function db()
    {
        $conn=Db::connect();

        /**
         * 以下静态方法，实际上是先使用Db::connect()获取connect对象，然后调用connect中的方法
         */
        $query=Db::table("demo_index");
        var_dump($query);
        
        $query=Db::name("index");
        var_dump($query);

        $data=Db::query("SELECT * FROM `demo_index`");
        var_dump($data);

        $result=Db::execute("INSERT INTO `demo_index` (`id`, `name`) VALUES (NULL, '"."db:".time()."')");
        var_dump($result);
    }
    public function connect()
    {
        $conn=Db::connect();

        /**
         * table/name方法，是调用的query中的方法
         * query对象在connect对象创建时就已经创建了
         * connect对象中不能用query对象中的其他方法，因为无法设置表名，所以会报错。相应的操作直接用table方法返回的query进行
         */
        $query=$conn->table("demo_index");
        var_dump($query);
        
        $query=$conn->name("index");
        var_dump($query);
        
        /**
         * connect对象自带的方法
         */
        $data=$conn->query("SELECT * FROM `demo_index`");
        var_dump($data);

        $result=$conn->execute("INSERT INTO `demo_index` (`id`, `name`) VALUES (NULL, '"."connect:".time()."')");
        var_dump($result);

        $result=$conn->batchQuery([
            "INSERT INTO `demo_index` (`id`, `name`) VALUES (NULL, '"."connect batchQuery1:".time()."')",
            "INSERT INTO `demo_index` (`id`, `name`) VALUES (NULL, '"."connect batchQuery2:".time()."')"
        ]);
        var_dump($result);
    }
    public function query()
    {
        $query=Db::name("index");
        /**
         * 连贯操作
         * 可以不执行，只获取SQL语句
         * 每次操作后会清空
         */
        $sql=$query->where("1=1")->field("*")->order("id")->fetchSql()->select();
        var_dump($sql);

        $data=$query->where("1=1")->field("*")->order("id")->select();
        var_dump($data);

        $data=$query->where("1=1")->field("*")->order("id")->find();
        var_dump($data);

        /**
         * 以下方法实际上调用的是connect中的方法，connect对象是在query对象创建时依赖注入的
         */
        $data=$query->query("SELECT * FROM `demo_index`");
        var_dump($data);

        $result=$query->execute("INSERT INTO `demo_index` (`id`, `name`) VALUES (NULL, '"."connect:".time()."')");
        var_dump($result);
    }
    public function model()
    {
        $model=model("index");
        /**
         * model对象中调用数据库的操作实际上与query对象相同
         */
        $sql=$model->where("1=1")->field("*")->order("id")->fetchSql()->select();
        var_dump($sql);

        $data=$model->where("1=1")->field("*")->order("id")->select();
        var_dump($data);

        $data=$model->where("1=1")->field("*")->order("id")->find();
        var_dump($data);

        $data=$model->query("SELECT * FROM `demo_index`");
        var_dump($data);

        $result=$model->execute("INSERT INTO `demo_index` (`id`, `name`) VALUES (NULL, '"."connect:".time()."')");
        var_dump($result);

        /**
         * model对象中自带的一些静态方法
         */
        $model=IndexModel::get("1=1");//返回的是model对象，数据已经载入
        $data=$model->getData();//获取数据
        var_dump($data);
        
    }
}
